import axios from 'axios';
import QS from 'qs';
import store from "../store";


// 环境的切换
// if (process.env.NODE_ENV == 'development') {
//     axios.defaults.baseURL = 'http://localhost:9001';
// } else if (process.env.NODE_ENV == 'debug') {
//     axios.defaults.baseURL = 'http://localhost:9001';
// } else if (process.env.NODE_ENV == 'production') {
//     axios.defaults.baseURL = 'http://localhost:9001';
// }
// axios.defaults.baseURL = 'http://localhost:10086/api';
axios.defaults.baseURL = 'http://42.192.195.63:10086/api';

// 设置请求超时时间
axios.defaults.timeout = 10000;
// post请求头的设置
// axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';
// axios.defaults.headers.post['Content-Type'] = 'multipart/form-data';
// axios.defaults.headers['Content-Type'] = 'application/x-www-form-urlencoded';

// 请求拦截器
axios.interceptors.request.use(
    config => {

        // 取vuex中存在的登陆token，如存在即在请求header后+token,后台拦截确认
        // const token = store.state.token;
        const token = 111;
        token && (config.headers.token = token);
        return config;

    },
    error => {
        return Promise.error(error);
    })

// 即使本地存在token，也有可能token是过期的，所以在响应拦截器中要对返回状态进行判断
// 响应拦截器
axios.interceptors.response.use(
    response => {
        // if (response.status === 200) {
        //     return Promise.resolve(response);
        // } else {
        //     return Promise.reject(response);
        // }

        return Promise.resolve(response);

    })

// Get和Post请求封装
export function get(url, params) {
    return new Promise((resolve, reject) => {
        axios.get(url, {
            params: params
        }).then(res => {
            resolve(res.data);
        }).catch(err => {
            reject(err.data)
        })
    });
}

export function post(url, params) {
    return new Promise((resolve, reject) => {
        axios.post(url, QS.stringify(params))
            .then(res => {
                resolve(res.data);
            })
            .catch(err => {
                reject(err.data)
            })
    });
}
export function upload(url, params) {
    let configs = {
        headers:{'Content-Type':'multipart/form-data'}
    };
    return new Promise((resolve, reject) => {
        axios.post(url, params,configs)
            .then(res => {
                resolve(res.data);
            })
            .catch(err => {
                console.log("hello")

                reject(err.data)
            })
    });
}